
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE [dbo].[paChequearIniciosDeLicencias] 
-- <DESCRIPCION> Realiza el chequeo de concecion de una licencia.
-- <CONSIDERACIONES ESPECIALES> Licencias Extraordinarias, Licencias Historicas, Licencias Actuales.
-- <TABLAS> tb_ServiciosAgentes, tb_SubServiciosAgentes, tb_ColaDeMovimientos, tb_PlazasDeMovimiento, tb_Licencias, tb_Plazas
-- <PROCEDIMIENTOS> spDIFDiasHabiles, spAntiguedadAgenteHab, spAntiguedadAgente
-- <ACTUALIZACIONES> 24 - 03 - 2006 por OTERO, Javier. (Se agrega control de duplicado ya aprobado)
-- <ACTUALIZACIONES> 28 - 03 - 2006 por FIORUCCI, Adriana y SANES, Jorge. (Se agrega control de duplicado ya aprobado, se agrego control por Servicio)
-- <ACTUALIZACIONES> 11 - 04 - 2006 por SANES, Jorge. (Se agrega GOTO Salir en Controles que generan codigo 3)
-- <ACTUALIZACIONES> 09 - 05 - 2006 por OTERO, Javier. (Se agrega control de antiguedad o posterioridad de movimiento)
-- <ACTUALIZACIONES> 23 - 05 - 2006 por FIORUCCI, Adriana y SANES, Jorge. (Se agrega control contra la Cola de Movimiento para que no existan Licencias Pendientes de Procesar)
-- <ACTUALIZACIONES> 29 - 05 - 2006 por SANES, Jorge. (Se agrega control contra la Cola de Movimiento para que no existan Licencias Pendientes de Procesar - Se actualizo la Ventana y el codigo de error del PA)
-- <ACTUALIZACIONES> 04 - 09 - 2006 por FIORUCCI, Adriana y SANES, Jorge. (En control de Intermedio Obligatorio se cambio signo > por <)
-- <ACTUALIZACIONES> 19 - 10 - 2006 por OTERO, Javier. (Se agrega el control de Antiguedad Maxima y Licencias Relacionadas)
-- <ACTUALIZACIONES> 11 - 12 - 2007 por FIORUCCI Adriana y SANES, Jorge  (Se mejoro el control de Movimientos pendientes para la misma plaza en el mismo momento de registración)
--  <ACTUALIZACIONES> 28-04-2009  OTERO, Marcelo y SANES, Jorge (Se agrego que no se chequee la Licencia de Paro Docente porque no esta la desicion de descontar o no -- 28-04-2009)
--  <ACTUALIZACIONES> 18-05-2009  OTERO, Marcelo y SANES, Jorge (Controles sobre carga de Licencias de Paro)
--  <ACTUALIZACIONES> 19-05-2009  OTERO, Marcelo y SANES, Jorge (Controles sobre carga de Licencias de Paro)
--  <ACTUALIZACIONES> 26-05-2009  OTERO, Marcelo y SANES, Jorge (Se agrego control para que la Cantidad de Obligaciones a Descontar, si corresponden, no superen las horas del servicio)
--  <ACTUALIZACIONES> 04-06-2009  OTERO, Marcelo y SANES, Jorge (Se agrego control para Licencias Tipo 5 y 6 Enganchadas que valida cantidad de dias e intervalos)


-- ACTUALIZADO EN DB
--15/05/2006 - SANES, Jorge
--23/05/2006 - SANES, Jorge
--29/05/2006 - SANES, Jorge
--12/12/2007 - SANES, Jorge

@idCola INT,
@Estado INT OUTPUT,
@Diagnostico VARCHAR(4000) OUTPUT,
@ColasControl VARCHAR(150) 

AS

SET NOCOUNT ON

SET DATEFORMAT dmy

DECLARE @Warning VARCHAR(1000)
DECLARE @Fecha1 DATETIME
DECLARE @Fecha2 DATETIME
DECLARE @SitRev INT
DECLARE @Agente INT
DECLARE @SubServicio INT
DECLARE @Servicio INT
DECLARE @Licencia INT
DECLARE @error INT
DECLARE @DuracionMax INT
DECLARE @dias INT
DECLARE @RequiereEnfermedad VARCHAR(1)
DECLARE @UTDurMax INT
DECLARE @UTAntMin INT
DECLARE @AntMin INT
DECLARE @UTCAntMin INT
DECLARE @INTermedioObligatorio INT
DECLARE @UTINTermedioObligatorio INT
DECLARE @Limite1 INT
DECLARE @Limite2 INT
DECLARE @UTLimite1 INT
DECLARE @UTLimite2 INT
DECLARE @UTCLimite1 INT
DECLARE @UTCLimite2 INT
DECLARE @CantMax INT
DECLARE @UTCCantMax INT
DECLARE @UTC VARCHAR(10)
DECLARE @cod INT
DECLARE @SPEspecIFico VARCHAR(50)
DECLARE @FAlta DATETIME
DECLARE @SitLabAsociada INT
DECLARE @CUPOFDestino INT
DECLARE @FechaTermino DATETIME
DECLARE @FechaAEvaluar DATETIME
DECLARE @DuracionMinima INT
DECLARE @UTDuracionMinima INT
DECLARE @Aplicacion INT
DECLARE @Turno INT
DECLARE @FechaDeLicencia INT
DECLARE @FechaDesde DATETIME
DECLARE @FechaHasta DATETIME
DECLARE @NoControlarAntiguedad BIT
DECLARE @Enfermedad INT
DECLARE @Modo INT
DECLARE @ObligacionesADescontar  INT 
DECLARE @HorasDelServicio INT

-- Para almacenar el porque se produjo el error por si hay que llamar a una restriccion especifica.
DECLARE @OrigenDelError INT 
-- Para almacenar el nombre del procedimiento de restriccion especifica.
DECLARE @RestriccionEspecifica VARCHAR(255)
DECLARE @Plaza INT
DECLARE @IDServicioAgente INT 

DECLARE @FASA DATETIME
DECLARE @FBSA DATETIME
DECLARE @Causa INT
-- Almacena el parametro para contar la cantidad de dias permitidos para pasar un movimiento posterior.
DECLARE @DiasPosterioresAlta INT
-- Almacena el parametro para contar la cantidad de dias permitidos para pasar un movimiento anterior a la fecha.
DECLARE @DiasAnterioresAlta INT
DECLARE @DiasPosterioresBaja INT
DECLARE @DiasAnterioresBaja INT
DECLARE @AntiguedadMaxima INT
DECLARE @UTAntiguedadMaxima INT
DECLARE @UTCAntiguedadMAxima INT
DECLARE @DiasAcumulados INT 
DECLARE @LicenciaRelacionada INT

SET @Diagnostico = ' '
SET @error = 0
SET @cod = 0
SET @Causa = 0
SET @DiasAcumulados = 0

-- Se extraen los datos de la Cola de Movimientos
SELECT @Fecha1 = Fecha1, @Fecha2 = Fecha2, @Agente = Agente, @Licencia = Licencia, @SitRev = SitRev,  @FechaTermino = FechaTermino 
	FROM tb_ColaDeMovimientos WHERE idCola = @idCola

SELECT @SubServicio = servicio, @CUPOFDestino = PlazaDestino, @FechaDeLicencia = FechaDeLicencia, @Enfermedad = Enfermedad, @ObligacionesADescontar = ObligacionesADescontar
	FROM tb_PlazasDeMovimiento WHERE idCola = @idCola

SELECT @Modo = Modo FROM tb_Usuarios WHERE NTUser = SYSTEM_USER
SELECT @DiasPosterioresAlta = CONVERT(INT, Valor1) FROM tb_Parametros WHERE Parametro = 'DiasDeDiferenciaParaFechasDeAltaPosterior'
SELECT @DiasAnterioresAlta = CONVERT(INT, Valor1) FROM tb_Parametros WHERE Parametro = 'DiasDeDiferenciaParaFechasDeAltaAnteriores'
SELECT @DiasPosterioresBaja = CONVERT(INT, Valor1) FROM tb_Parametros WHERE Parametro = 'DiasDeDiferenciaParaFechasDeBajaPosterior'
SELECT @DiasAnterioresBaja = CONVERT(INT, Valor1) FROM tb_Parametros WHERE Parametro = 'DiasDeDiferenciaParaFechasDeBajaAnteriores'

SELECT @Plaza = Plaza, @IDServicioAgente=ServicioAgente  FROM tb_SubServiciosAgentes WHERE IdSubServicio = @SubServicio


-- Agregado 18-05-2009 para Licencias con tratamiento especial 
DECLARE @DescuentaObligaciones VARCHAR(1)
DECLARE @FechaBajaObligatoria VARCHAR(1)
DECLARE @ControlFechasDeLicencia VARCHAR(1)
SELECT @DescuentaObligaciones= DescuentaObligaciones, @FechaBajaObligatoria  = FechaBajaObligatoria,  @ControlFechasDeLicencia = ControlFechasDeLicencia 
	FROM Tb_Licencias WHERE IdLicencia = @Licencia

-- Agregado 19-05-2009 para Licencias con tratamiento especial
DECLARE @RegimenSalarialPlaza INT
SELECT @RegimenSalarialPlaza =  RegimenSalarial FROM tb_Plazas WHERE idPlaza = @Plaza


/*
-- Cambio realizado 10-12-2007
-- Control agregado 23/05/2006 y 29/05/2006
-- Verificar que NO exista en la Cola de Movimientos otra Licencia registrada sin Procesar por Personal Docente
IF EXISTS(SELECT top 1 CM.IdCola   FROM Tb_ColaDeMovimientos AS CM   INNER JOIN Tb_PlazasDeMovimiento AS PM ON CM.IdCola=PM.IdCola
	    INNER JOIN  tb_InicioSGITemp ON CM.Organizacion = tb_InicioSGITemp.Organizacion 
  	    WHERE CM.Movimiento=3 AND CM.Estado IN (0,1) AND CM.Agente=@Agente  AND PM.IDPlaza=@Plaza AND CM.IdCola<>@IdCola and   CM.Fecha >=tb_InicioSGITemp.FechaControles)
Begin
   SELECT @Cod = 99, @Diagnostico='* Atención ! Existe otra Licencia para este Agente en este CUPOF pendiente de Aprobar/Procesar por Personal Docente.-.' --+CONVERT(VARCHAR(10),@IdCola)+'/'+CONVERT(VARCHAR(10),@Plaza)
   GOTO Salir
End
*/

-- Agregado 18-05-2009 para Licencias con tratamiento especial 
-- Chequear que si se trata de una Licencia que debe incluir Fecha de Baja Obligatoria la ponga
IF @FechaBajaObligatoria = 'S' AND @Fecha2 IS NULL 
BEGIN
	SELECT @cod = 3, @Diagnostico='* Error! La Licencia requiere que se ingrese la Fecha de Baja de la misma.'
	GOTO Salir
END 


------------------------------------------- FUNCION PARA ANALIZAR Colas Enviadas en el mismo movimiento  11-12-2007 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

-- El parametro @ColasControl trae colas para chequear cuando se llama de la pantalla de Concecion de Licencias, si el chequeo se llama de la pantalla de movimientos pendientes no debiera chequear esto.
IF LEN(RTRIM(LTRIM(@ColasControl))) >0
     BEGIN 
	DECLARE @Delimitador CHAR(1)
	
	SET @Delimitador = ','
	
	DECLARE @Item Varchar(200)
	
	CREATE TABLE #ListaColas(Item Varchar(10)) 
	
	WHILE CHARINDEX(@Delimitador,@ColasControl,0) <> 0
		BEGIN
	
			SELECT
				@Item=RTRIM(LTRIM(SUBSTRING(@ColasControl,1,CHARINDEX(@Delimitador,@ColasControl,0)-1))),
				@ColasControl=RTRIM(LTRIM(SUBSTRING(@ColasControl,CHARINDEX(@Delimitador,@ColasControl,0)+1,LEN(@ColasControl))))
			IF LEN(@Item) > 0
				INSERT INTO #ListaColas SELECT @Item
		END
	
	IF LEN(@ColasControl) > 0
		INSERT INTO #ListaColas SELECT @ColasControl 
	
	-- Verificar que NO exista en la Cola de Movimientos otra Licencia registrada sin Procesar por Personal Docente
	IF EXISTS(SELECT TOP 1 CM.IdCola   FROM Tb_ColaDeMovimientos AS CM  
		    INNER JOIN Tb_PlazasDeMovimiento AS PM ON CM.IdCola=PM.IdCola
		    INNER JOIN  tb_InicioSGITemp ON CM.Organizacion = tb_InicioSGITemp.Organizacion 
		    LEFT OUTER JOIN tb_Usuarios U ON U.NTUser = CM.NTUserAutor 
	  	   	 WHERE CM.Movimiento=3 
			       AND CM.Estado IN (0,1) 
  			       AND CM.Licencia <> 91 --- Se agrego que no se chequee la Licencia de Paro Docente porque no esta la desicion de descontar o no -- 28-04-2009
			       AND CM.Agente=@Agente  
			       AND PM.IDPlaza=@Plaza
			       AND U.Modo = 2 
			       AND   CM.Fecha >=tb_InicioSGITemp.FechaControles 
			      AND CM.IdCola NOT IN (SELECT Item FROM #ListaColas) )
		BEGIN
			   SELECT @Cod = 99, @Diagnostico='* Atención ! Existe otra Licencia para este Agente en este CUPOF pendiente de Aprobar/Procesar por Personal Docente.-.' 
			   GOTO Salir
		END
	
	
	DROP TABLE #ListaColas
     END
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


-- Verifica que el movimiento no exista -------- VER DEBE CONTROLAR POR PLAZA pero ojo con los Incrementos de Horas, son sobre la misma Plaza - CUPOF
IF EXISTS(SELECT top 1 IdSubServicio FROM tb_SubServiciosAgentes SS INNER JOIN tb_ServiciosAgentes S ON IdServicioAgente = ServicioAgente 
	WHERE S.IdServicioAgente=@IDServicioAgente AND  Agente = @Agente AND SS.FechaAlta = @Fecha1 AND Licencia = @Licencia)
BEGIN
	SELECT @cod = 3, @Diagnostico='* Error! La Licencia que intenta pasar ya fue Aprobada/Procesada por Personal Docente.'
	GOTO Salir
END 


-- Se quito el 18-05-2009 por el control que esta debajo 
-- Verifica que si viene una Fecha de Licencias, las fechas ingresadas esten comprendidas entre esta.
/*
IF @FechaDeLicencia IS NOT NULL
BEGIN
	SELECT @FechaDesde = FechaDesde, @FechaHasta = FechaHasta FROM tb_FechasDeLicencias WHERE IdFechaDeLicencia = @FechaDeLicencia

	IF @Fecha1 < @FechaDesde OR @Fecha2 > @FechaHasta
	BEGIN
		SELECT @cod = 3, @Causa = 1, @Diagnostico='* Error! La fechas que desea ingresar no está dentro del rango válido para la Fecha De Licencia seleccionada.'
		GOTO salir
	END	
END
*/


-- Agregado 18-05-2009 para Licencias con tratamiento especial 
-- Controlar que la fecha ingresada corresponda a las que se encuentran definidas en la tabla para ducha licencia 
IF @ControlFechasDeLicencia = 'S'
BEGIN
	IF NOT EXISTS (SELECT IdFechaDeLicencia FROM tb_FechasDeLicencias WHERE Licencia = @Licencia AND (@Fecha1 >= FechaDesde AND @Fecha1 <= FechaHasta) AND (@Fecha2 >= FechaDesde AND @Fecha2 <= FechaHasta) )
		BEGIN
			SELECT @Cod = 3, @Causa = 1, @Diagnostico='* Error! La fechas que desea ingresar no está dentro del rango válido para la Fecha De Licencia seleccionada.'
			GOTO Salir
		END	
END 

-- Agregado 18/05/2009 para Licencias con tratamiento especial 
-- Si la licencia requiere obligaciones y se trata de un servicio de Horas ver que se haya ingresado y que sea > = 1 
-- SOLO SE PIDE PARA REGIMENSALARIAL = 13 PORQUE PARA LOS CARGOS SE DESCUENTAN DIAS (RESTA DE FECHAS)

SELECT @HorasDelServicio =  Horas FROM Tb_ServiciosAgentes WHERE IdServicioAgente =  @IDServicioAgente

IF @DescuentaObligaciones = 'S' AND @RegimenSalarialPlaza = 13 AND ( (@ObligacionesADescontar <= 0 OR @ObligacionesADescontar IS NULL) OR (@ObligacionesADescontar > @HorasDelServicio ) )
BEGIN
	SELECT @Cod = 3, @Causa = 1, @Diagnostico='* Error! La Licencia requiere que se ingresen "Obligaciones a Descontar" y que estas no superen las Horas del Servicio.'
	GOTO Salir
END 


SELECT @Servicio = ServicioAgente, @FAlta = SS.FechaAlta, @Turno = P.Turno  
	FROM tb_SubServiciosAgentes SS
		INNER JOIN tb_Plazas P ON IdPlaza = Plaza
	WHERE idSubServicio = @SubServicio 

SELECT @SitRev = SituacionRevista, @FASA = FechaAlta, @FBSA = FechaBaja 
	FROM tb_ServiciosAgentes 
	WHERE idServicioagente = @Servicio

-- Extraigo los atributos de la licencia
SELECT @DuracionMax = DuracionMaxima, @RequiereEnfermedad = RequiereRegEnfermedad,
	 @UTDurMax = UTDuracionMaxima, @UTAntMin = UTAntiguedadMinima, @AntMin = AntiguedadMinima, @UTCAntMin = UTCAntiguedadMinima,
	 @INTermedioObligatorio = INTermedioObligatorio, @UTINTermedioObligatorio = UTINTermOblig, @Limite1 = LimiteDias1, @UTLimite1 = UTLimiteDias1,
	 @UTCLimite1 = UTCLimiteDias1,  @Limite2 = LimiteDias2, @UTLimite2 = UTLimiteDias2, @UTCLimite2 = UTCLimiteDias2, @CantMax = CantidadMaxPedidos,
	 @UTCCantMax = UTCCantidadMaxPed, @SPEspecIFico = RestriccionEspecIFica, @SitLabAsociada = SituacionLaboralAsociada,
	 @DuracionMinima = DuracionMinima, @UTDuracionMinima = UTDuracionMinima, @Aplicacion = Aplicacion, @RestriccionEspecifica = RestriccionEspecifica,
	 @AntiguedadMaxima = AntiguedadMaxima, @UTAntiguedadMaxima = UTAntiguedadMaxima, @UTCAntiguedadMaxima = UTCAntiguedadMaxima
     FROM tb_licencias WHERE idLicencia = @Licencia

-- Veo si la licencia se tiene que insertar abierta. Si es asi tomo para evaluar la fecha prevista de termino.
IF @Fecha2 is NOT NULL
	SELECT @FechaAEvaluar = @Fecha2
ELSE

IF @Fecha2 is NULL AND @FechaTermino is NOT NULL
	SELECT @FechaAEvaluar = @FechaTermino
ELSE
	SELECT @FechaAEvaluar = GETDATE()

-- LAS ESCUELAS NO PUEDEN PASAR LICENCIAS EXTRAPRDINARAS
IF @Modo = 2 AND @Licencia IN (SELECT IdLicencia FROM tb_Licencias WHERE SituacionLaboralAsociada = 1)
BEGIN
	SELECT @Cod = 3, @Causa = 2, @Diagnostico = 'Error! El usuario no puede informar Licencias Extraordinarias'
	GOTO salir
END

-- Si no viene el cupof destino
IF @CupofDestino = -1 
	SELECT  @CupofDestino = NULL

IF @fecha1 < @FASA
BEGIN
	SELECT @cod = 3, @Causa = 3, @Diagnostico='* Error! La fecha de alta en la que se quiere insertar la licencia no puede ser anterior a la fecha de alta del servicio!'
	GOTO salir
END

IF @Fecha2 IS NOT NULL AND @FBSA IS NOT NULL AND @Fecha2 > @FBSA
BEGIN
	SELECT @cod = 3, @Causa = 4, @Diagnostico='* Error! La fecha de baja de la licencia es posterior a la fecha de baja del servicio!'
	GOTO salir
END

IF EXISTS(SELECT top 1 IdSubServicio FROM tb_SubServiciosAgentes WHERE ServicioAgente = @Servicio AND FechaBaja = @fecha1 AND Licencia IS NOT NULL)
BEGIN
	SELECT @cod = 3, @Causa = 5, @Diagnostico='* Error! La fecha del movimiento que intenta realizar se superpone con otro subservicio!'
	GOTO salir
END

IF @Fecha1 > @Fecha2
BEGIN
	SELECT @Cod = 3,  @Causa = 6, @Diagnostico = '* Error! La fecha de inicio es mayor a la fecha de fin!'
	GOTO salir
END

-- Control agregado 03-06-2009
IF @Fecha1 > @FechaAEvaluar
BEGIN
	SELECT @Cod = 3,  @Causa = 6, @Diagnostico = '* Error! La fecha de Inicio es mayor a la Fecha Prevista de Termino, deberia indicar una Fecha Prevista  mayor a la de Inicio para registrar el Movimiento.-'
	GOTO salir
END



--Agregado 03-06-2009 para Licencias de ID 5 o 6 
--	5 - 135b Largo Tratamiento CON Goce de Hab
--	6 - 135b Largo Tratamiento con 50% de Hab

--IF @Licencia = 5 OR @Licencia = 6
	--BEGIN
  		--DECLARE @FechaHastaLicEsp DATETIME
		--SET @FechaHastaLicEsp = DATEADD(DAY, 30, @Fecha1)
		--IF @Fecha2 is not null
 			--SET @FechaHastaLicEsp = @Fecha2
		
		--EXEC paChequearIntervaloLicencias  @Agente, @Licencia,  @Fecha1, @FechaHastaLicEsp ,  @cod OUTPUT , @Diagnostico OUTPUT 
		--IF @Cod = 3
			--GOTO Salir
	--END

--Agregado por pablo richard para probar los scrip de cada licencia
--Licencia de corto tratamiento 23
DECLARE  @Resultado INT
IF @Licencia=12 BEGIN
EXEC paChequearIniciodeLicencia23 @idCola,@Causa, @Resultado OUTPUT,@Diagnostico OUTPUT
SELECT @Cod = 1, @Causa = 7, @Diagnostico = convert(VARCHAR(1000),@Diagnostico)
 IF @Diagnostico<>'' 
  BEGIN
    SET @Cod = 1
	GOTO Salir
 END
 ELSE
 SET @Cod=0
END

--Agregado por pablo richard para probar los scrip de cada licencia
--Licencia de largo tratamiento 25cg
IF @Licencia=11 BEGIN
EXEC paChequearIniciodeLicencia25cg @idCola,@Causa, @Resultado OUTPUT,@Diagnostico OUTPUT
SELECT @Cod = 3, @Causa = 7, @Diagnostico =+convert(VARCHAR(1000), @Diagnostico)
 IF @Diagnostico<>''
  BEGIN
    SET @Cod = 1
	GOTO Salir
 END
 ELSE
 SET @Cod=0
END
--Agregado por pablo richard para probar los scrip de cada licencia
--Licencia de largo tratamiento 25cmg
IF @Licencia=180 BEGIN
EXEC paChequearIniciodeLicencia25cmg @idCola,@Causa, @Resultado OUTPUT,@Diagnostico OUTPUT
SELECT @Cod = 3, @Causa = 7, @Diagnostico =+convert(VARCHAR(1000), @Diagnostico)
 IF @Diagnostico<>''
  BEGIN
    SET @Cod = 1
	GOTO Salir
 END
 ELSE
 SET @Cod=0
END
--Agregado por pablo richard para probar los scrip de cada licencia
--Licencia de largo tratamiento 25sg
IF @Licencia=181 BEGIN
EXEC paChequearIniciodeLicencia25sg @idCola,@Causa, @Resultado OUTPUT,@Diagnostico OUTPUT
SELECT @Cod = 3, @Causa = 7, @Diagnostico =+convert(VARCHAR(1000), @Diagnostico)
	
 IF @Diagnostico<>''
  BEGIN
    SET @Cod = 1
	GOTO Salir
 END
 ELSE
 SET @Cod=0
END
--Agregado por pablo richard para probar los scrip de cada licencia
--Licencia accidente de trabajo o enfermedad profesional 28cg
IF @Licencia=146 BEGIN
EXEC paChequearIniciodeLicencia28cg @idCola,@Causa, @Resultado OUTPUT,@Diagnostico OUTPUT
SELECT @Cod = 3, @Causa = 7, @Diagnostico =+convert(VARCHAR(1000), @Diagnostico)
	
 IF @Diagnostico<>''
  BEGIN
    SET @Cod = 1
	GOTO Salir
 END
 ELSE
 SET @Cod=0
END
--Agregado por pablo richard para probar los scrip de cada licencia
--Licencia accidente de trabajo o enfermedad profesional 28cmg
IF @Licencia=7 BEGIN
EXEC paChequearIniciodeLicencia28cmg @idCola,@Causa, @Resultado OUTPUT,@Diagnostico OUTPUT
SELECT @Cod = 3, @Causa = 7, @Diagnostico =+convert(VARCHAR(1000), @Diagnostico)
	
 IF @Diagnostico<>''
  BEGIN
    SET @Cod = 1
	GOTO Salir
 END
 ELSE
 SET @Cod=0
END
--Agregado por pablo richard para probar los scrip de cada licencia
--Licencia accidente trabajo o enfermedad profesional 28sg
IF @Licencia=148 BEGIN
EXEC paChequearIniciodeLicencia28sg @idCola,@Causa, @Resultado OUTPUT,@Diagnostico OUTPUT
SELECT @Cod = 3, @Causa = 7, @Diagnostico =+convert(VARCHAR(1000), @Diagnostico)
	
 IF @Diagnostico<>''
  BEGIN
    SET @Cod = 1
	GOTO Salir
 END
 ELSE
 SET @Cod=0
END
--Agregado por pablo richard para probar los scrip de cada licencia
--Licencia de cambio de funciones temporal 32 temporal
IF @Licencia=19 BEGIN
EXEC paChequearIniciodeLicencia32temporal @idCola,@Causa, @Resultado OUTPUT,@Diagnostico OUTPUT
SELECT @Cod = 3, @Causa = 7, @Diagnostico =+convert(VARCHAR(1000), @Diagnostico)
	
 IF @Diagnostico<>''
  BEGIN
    SET @Cod = 1
	GOTO Salir
 END
 ELSE
 SET @Cod=0
END
--Agregado por pablo richard para probar los scrip de cada licencia
--Licencia de cambio de funciones temporal 32 Permanente
IF @Licencia=20 BEGIN
EXEC paChequearIniciodeLicencia32Permanente @idCola,@Causa, @Resultado OUTPUT,@Diagnostico OUTPUT
SELECT @Cod = 3, @Causa = 7, @Diagnostico =+convert(VARCHAR(1000), @Diagnostico)
	
 IF @Diagnostico<>''
  BEGIN
    SET @Cod = 1
	GOTO Salir
 END
 ELSE
 SET @Cod=0
END
--Agregado por pablo richard para probar los scrip de cada licencia
--Licencia de Maternidad 34 preparto 
IF @Licencia=11 BEGIN
EXEC paChequearIniciodeLicencia34preparto @idCola,@Causa, @Resultado OUTPUT,@Diagnostico OUTPUT
SELECT @Cod = 3, @Causa = 7, @Diagnostico =+convert(VARCHAR(1000), @Diagnostico)
	
 IF @Diagnostico<>''
  BEGIN
    SET @Cod = 1
	GOTO Salir
 END
 ELSE
 SET @Cod=0
END

--Agregado por pablo richard para probar los scrip de cada licencia
--Licencia de Maternidad 34 postparto 
IF @Licencia=12 BEGIN
EXEC paChequearIniciodeLicencia34postparto @idCola,@Causa, @Resultado OUTPUT,@Diagnostico OUTPUT
SELECT @Cod = 3, @Causa = 7, @Diagnostico =+convert(VARCHAR(1000), @Diagnostico)
	
 IF @Diagnostico<>''
  BEGIN
    SET @Cod = 1
	GOTO Salir
 END
 ELSE
 SET @Cod=0
END
--Agregado por pablo richard para probar los scrip de cada licencia
--Licencia de Maternidad 34 def fetal 
IF @Licencia=121 BEGIN
EXEC paChequearIniciodeLicencia34defFetal @idCola,@Causa, @Resultado OUTPUT,@Diagnostico OUTPUT
SELECT @Cod = 3, @Causa = 7, @Diagnostico =+convert(VARCHAR(1000), @Diagnostico)
	
 IF @Diagnostico<>''
  BEGIN
    SET @Cod = 1
	GOTO Salir
 END
 ELSE
 SET @Cod=0
END
--Agregado por pablo richard para probar los scrip de cada licencia
--Licencia de Maternidad 34 postmultiple 
IF @Licencia=13 BEGIN
EXEC paChequearIniciodeLicencia34postmultiple @idCola,@Causa, @Resultado OUTPUT,@Diagnostico OUTPUT
SELECT @Cod = 3, @Causa = 7, @Diagnostico =+convert(VARCHAR(1000), @Diagnostico)
	
 IF @Diagnostico<>''
  BEGIN
    SET @Cod = 1
	GOTO Salir
 END
 ELSE
 SET @Cod=0
END
--Agregado por pablo richard para probar los scrip de cada licencia
--Licencia de Maternidad 34 prematuro 
IF @Licencia=85 BEGIN
EXEC paChequearIniciodeLicencia34prematuro @idCola,@Causa, @Resultado OUTPUT,@Diagnostico OUTPUT
SELECT @Cod = 3, @Causa = 7, @Diagnostico =+convert(VARCHAR(1000), @Diagnostico)
	
 IF @Diagnostico<>''
  BEGIN
    SET @Cod = 1
	GOTO Salir
 END
 ELSE
 SET @Cod=0
END
--Agregado por pablo richard para probar los scrip de cada licencia
--Licencia de atencion hijos menores 37 
IF @Licencia=24 BEGIN
EXEC paChequearIniciodeLicencia37atencionhijosmenores @idCola,@Causa, @Resultado OUTPUT,@Diagnostico OUTPUT
SELECT @Cod = 3, @Causa = 7, @Diagnostico =+convert(VARCHAR(1000), @Diagnostico)
	
 IF @Diagnostico<>''
  BEGIN
    SET @Cod = 1
	GOTO Salir
 END
 ELSE
 SET @Cod=0
END
--Agregado por pablo richard para probar los scrip de cada licencia
--Licencia por adopcion 
IF @Licencia=14 BEGIN
EXEC paChequearIniciodeLicencia35adopcion @idCola,@Causa, @Resultado OUTPUT,@Diagnostico OUTPUT
SELECT @Cod = 3, @Causa = 7, @Diagnostico =+convert(VARCHAR(1000), @Diagnostico)
	
 IF @Diagnostico<>''
  BEGIN
    SET @Cod = 1
	GOTO Salir
 END
 ELSE
 SET @Cod=0
END
--Agregado por pablo richard para probar los scrip de cada licencia
--Licencia por atencion familiar con goce 
IF @Licencia=192 BEGIN
EXEC paChequearIniciodeLicencia38cg @idCola,@Causa, @Resultado OUTPUT,@Diagnostico OUTPUT
SELECT @Cod = 3, @Causa = 7, @Diagnostico =+convert(VARCHAR(1000), @Diagnostico)
	
 IF @Diagnostico<>''
  BEGIN
    SET @Cod = 1
	GOTO Salir
 END
 ELSE
 SET @Cod=0
END
--Agregado por pablo richard para probar los scrip de cada licencia
--Licencia por atencion familiar sin goce 
IF @Licencia=65 BEGIN
EXEC paChequearIniciodeLicencia38sg @idCola,@Causa, @Resultado OUTPUT,@Diagnostico OUTPUT
SELECT @Cod = 3, @Causa = 7, @Diagnostico =+convert(VARCHAR(1000), @Diagnostico)
	
 IF @Diagnostico<>''
  BEGIN
    SET @Cod = 1
	GOTO Salir
 END
 ELSE
 SET @Cod=0
END
--Agregado por pablo richard para probar los scrip de cada licencia
--Licencia por atencion hijo con anorexia o bulimia (no esta esta ver lo scrip de cuno) 
IF @Licencia=0 BEGIN
EXEC paChequearIniciodeLicencia38anorexoBul @idCola,@Causa, @Resultado OUTPUT,@Diagnostico OUTPUT
SELECT @Cod = 3, @Causa = 7, @Diagnostico =+convert(VARCHAR(1000), @Diagnostico)
	
 IF @Diagnostico<>''
  BEGIN
    SET @Cod = 1
	GOTO Salir
 END
 ELSE
 SET @Cod=0
END
--Agregado por pablo richard para probar los scrip de cada licencia
--Licencia por atencion hijo disfuncionado 
IF @Licencia=212 BEGIN
EXEC paChequearIniciodeLicencia38difuncionado @idCola,@Causa, @Resultado OUTPUT,@Diagnostico OUTPUT
SELECT @Cod = 3, @Causa = 7, @Diagnostico =+convert(VARCHAR(1000), @Diagnostico)
	
 IF @Diagnostico<>''
  BEGIN
    SET @Cod = 1
	GOTO Salir
 END
 ELSE
 SET @Cod=0
END
--Agregado por pablo richard para probar los scrip de cada licencia
--Licencia por matrimonio 
IF @Licencia=25 BEGIN
EXEC paChequearIniciodeLicencia39Matrimonio @idCola,@Causa, @Resultado OUTPUT,@Diagnostico OUTPUT
SELECT @Cod = 3, @Causa = 7, @Diagnostico =+convert(VARCHAR(1000), @Diagnostico)
	
 IF @Diagnostico<>''
  BEGIN
    SET @Cod = 1
	GOTO Salir
 END
 ELSE
 SET @Cod=0
END
--Agregado por pablo richard para probar los scrip de cada licencia
--Licencia por concurso de cargo de oposicion 44 
IF @Licencia=27 BEGIN
EXEC paChequearIniciodeLicencia44concursoCargoDeOposicion @idCola,@Causa, @Resultado OUTPUT,@Diagnostico OUTPUT
SELECT @Cod = 3, @Causa = 7, @Diagnostico =+convert(VARCHAR(1000), @Diagnostico)
	
 IF @Diagnostico<>''
  BEGIN
    SET @Cod = 1
	GOTO Salir
 END
 ELSE
 SET @Cod=0
END
--Agregado por pablo richard para probar los scrip de cada licencia
--Licencia por concurso de cargo de secundaria 44 (diferenciar con la de arriba)
IF @Licencia=27 BEGIN
EXEC paChequearIniciodeLicencia44secundario @idCola,@Causa, @Resultado OUTPUT,@Diagnostico OUTPUT
SELECT @Cod = 3, @Causa = 7, @Diagnostico =+convert(VARCHAR(1000), @Diagnostico)
	
 IF @Diagnostico<>''
  BEGIN
    SET @Cod = 1
	GOTO Salir
 END
 ELSE
 SET @Cod=0
END
--Agregado por pablo richard para probar los scrip de cada licencia
--Licencia por concurso de terciario o universitario 
IF @Licencia=27 BEGIN
EXEC paChequearIniciodeLicencia44terUni @idCola,@Causa, @Resultado OUTPUT,@Diagnostico OUTPUT
SELECT @Cod = 3, @Causa = 7, @Diagnostico =+convert(VARCHAR(1000), @Diagnostico)
	
 IF @Diagnostico<>''
  BEGIN
    SET @Cod = 1
	GOTO Salir
 END
 ELSE
 SET @Cod=0
END
--Agregado por pablo richard para probar los scrip de cada licencia
--Licencia por estudios e investigaciones 45cg
IF @Licencia=28 BEGIN
EXEC paChequearIniciodeLicencia45cg @idCola,@Causa, @Resultado OUTPUT,@Diagnostico OUTPUT
SELECT @Cod = 3, @Causa = 7, @Diagnostico =+convert(VARCHAR(1000), @Diagnostico)
	
 IF @Diagnostico<>''
  BEGIN
    SET @Cod = 1
	GOTO Salir
 END
 ELSE
 SET @Cod=0
END
--Agregado por pablo richard para probar los scrip de cada licencia
--Licencia por estudios e investigaciones 45sg
IF @Licencia=167 BEGIN
EXEC paChequearIniciodeLicencia45sg @idCola,@Causa, @Resultado OUTPUT,@Diagnostico OUTPUT
SELECT @Cod = 3, @Causa = 7, @Diagnostico =+convert(VARCHAR(1000), @Diagnostico)
	
 IF @Diagnostico<>''
  BEGIN
    SET @Cod = 1
	GOTO Salir
 END
 ELSE
 SET @Cod=0
END
--Agregado por pablo richard para probar los scrip de cada licencia
--Licencia por actividades culturales 46
IF @Licencia=29 BEGIN
EXEC paChequearIniciodeLicencia46 @idCola,@Causa, @Resultado OUTPUT,@Diagnostico OUTPUT
SELECT @Cod = 3, @Causa = 7, @Diagnostico =+convert(VARCHAR(1000), @Diagnostico)
	
 IF @Diagnostico<>''
  BEGIN
    SET @Cod = 1
	GOTO Salir
 END
 ELSE
 SET @Cod=0
END
--Agregado por pablo richard para probar los scrip de cada licencia
--Licencia por actividades deportivas 47
IF @Licencia=30 BEGIN
EXEC paChequearIniciodeLicencia47 @idCola,@Causa, @Resultado OUTPUT,@Diagnostico OUTPUT
SELECT @Cod = 3, @Causa = 7, @Diagnostico =+convert(VARCHAR(1000), @Diagnostico)
	
 IF @Diagnostico<>''
  BEGIN
    SET @Cod = 1
	GOTO Salir
 END
 ELSE
 SET @Cod=0
END
--Agregado por pablo richard para probar los scrip de cada licencia
--Licencia por cadidatura a cargos electivos 50
IF @Licencia=32 BEGIN
EXEC paChequearIniciodeLicencia50 @idCola,@Causa, @Resultado OUTPUT,@Diagnostico OUTPUT
SELECT @Cod = 3, @Causa = 7, @Diagnostico =+convert(VARCHAR(1000), @Diagnostico)
	
 IF @Diagnostico<>''
  BEGIN
    SET @Cod = 1
	GOTO Salir
 END
 ELSE
 SET @Cod=0
END
--Agregado por pablo richard para probar los scrip de cada licencia
--Licencia por ejercicio de cargos electivos o funciones de gobierno
IF @Licencia=33 BEGIN
EXEC paChequearIniciodeLicencia51 @idCola,@Causa, @Resultado OUTPUT,@Diagnostico OUTPUT
SELECT @Cod = 3, @Causa = 7, @Diagnostico =+convert(VARCHAR(1000), @Diagnostico)
	
 IF @Diagnostico<>''
  BEGIN
    SET @Cod = 1
	GOTO Salir
 END
 ELSE
 SET @Cod=0
END
--Agregado por pablo richard para probar los scrip de cada licencia
--Licencia por ejercicio de cargos sin estabilidad
IF @Licencia=34 BEGIN
EXEC paChequearIniciodeLicencia52 @idCola,@Causa, @Resultado OUTPUT,@Diagnostico OUTPUT
SELECT @Cod = 3, @Causa = 7, @Diagnostico =+convert(VARCHAR(1000), @Diagnostico)
	
 IF @Diagnostico<>''
  BEGIN
    SET @Cod = 1
	GOTO Salir
 END
 ELSE
 SET @Cod=0
END
--Agregado por pablo richard para probar los scrip de cada licencia
--Licencia para acompañar al conyuge
IF @Licencia=36 BEGIN
EXEC paChequearIniciodeLicencia54 @idCola,@Causa, @Resultado OUTPUT,@Diagnostico OUTPUT
SELECT @Cod = 3, @Causa = 7, @Diagnostico =+convert(VARCHAR(1000), @Diagnostico)
	
 IF @Diagnostico<>''
  BEGIN
    SET @Cod = 1
	GOTO Salir
 END
 ELSE
 SET @Cod=0
END
--Agregado por pablo richard para probar los scrip de cada licencia
--Licencia gremial 55
IF @Licencia=37 BEGIN
EXEC paChequearIniciodeLicencia55 @idCola,@Causa, @Resultado OUTPUT,@Diagnostico OUTPUT
SELECT @Cod = 3, @Causa = 7, @Diagnostico =+convert(VARCHAR(1000), @Diagnostico)
	
 IF @Diagnostico<>''
  BEGIN
    SET @Cod = 1
	GOTO Salir
 END
 ELSE
 SET @Cod=0
END
--Agregado por pablo richard para probar los scrip de cada licencia
--Licencia nacimiento o tenencia con fines de adopcion agente varon 57
IF @Licencia=0 BEGIN
EXEC paChequearIniciodeLicencia57varon @idCola,@Causa, @Resultado OUTPUT,@Diagnostico OUTPUT
SELECT @Cod = 3, @Causa = 7, @Diagnostico =+convert(VARCHAR(1000), @Diagnostico)
	
 IF @Diagnostico<>''
  BEGIN
    SET @Cod = 1
	GOTO Salir
 END
 ELSE
 SET @Cod=0
END
--Agregado por pablo richard para probar los scrip de cada licencia
--Licencia nacimiento o tenencia con fines de adopcion (prematuro,mutiple o niño debil) agente varon 57
IF @Licencia=0 BEGIN
EXEC paChequearIniciodeLicencia57varonprematuro @idCola,@Causa, @Resultado OUTPUT,@Diagnostico OUTPUT
SELECT @Cod = 3, @Causa = 7, @Diagnostico =+convert(VARCHAR(1000), @Diagnostico)
	
 IF @Diagnostico<>''
  BEGIN
    SET @Cod = 1
	GOTO Salir
 END
 ELSE
 SET @Cod=0
END
--Agregado por pablo richard para probar los scrip de cada licencia
--Licencia fallecimiento coyuge o hijos 58
IF @Licencia=39 BEGIN
EXEC paChequearIniciodeLicencia58conyugehijos @idCola,@Causa, @Resultado OUTPUT,@Diagnostico OUTPUT
SELECT @Cod = 3, @Causa = 7, @Diagnostico =+convert(VARCHAR(1000), @Diagnostico)
	
 IF @Diagnostico<>''
  BEGIN
    SET @Cod = 1
	GOTO Salir
 END
 ELSE
 SET @Cod=0
END
--Agregado por pablo richard para probar los scrip de cada licencia
--Licencia fallecimiento parientes directos 58
IF @Licencia=0 BEGIN
EXEC paChequearIniciodeLicencia58parientesdirectos @idCola,@Causa, @Resultado OUTPUT,@Diagnostico OUTPUT
SELECT @Cod = 3, @Causa = 7, @Diagnostico =+convert(VARCHAR(1000), @Diagnostico)
	
 IF @Diagnostico<>''
  BEGIN
    SET @Cod = 1
	GOTO Salir
 END
 ELSE
 SET @Cod=0
END

--Agregado por pablo richard para probar los scrip de cada licencia
--Licencia fallecimiento parientes lejanos 58
IF @Licencia=0 BEGIN
EXEC paChequearIniciodeLicencia58parienteslejanos @idCola,@Causa, @Resultado OUTPUT,@Diagnostico OUTPUT
SELECT @Cod = 3, @Causa = 7, @Diagnostico =+convert(VARCHAR(1000), @Diagnostico)
	
 IF @Diagnostico<>''
  BEGIN
    SET @Cod = 1
	GOTO Salir
 END
 ELSE
 SET @Cod=0
END

--Agregado por pablo richard para probar los scrip de cada licencia
--Licencia donacion de sangre 60
IF @Licencia=41 BEGIN
EXEC paChequearIniciodeLicencia60 @idCola,@Causa, @Resultado OUTPUT,@Diagnostico OUTPUT
SELECT @Cod = 3, @Causa = 7, @Diagnostico =+convert(VARCHAR(1000), @Diagnostico)
	
 IF @Diagnostico<>''
  BEGIN
    SET @Cod = 1
	GOTO Salir
 END
 ELSE
 SET @Cod=0
END
--Agregado por pablo richard para probar los scrip de cada licencia
--Licencia razones particulares 62
IF @Licencia=42 BEGIN
EXEC paChequearIniciodeLicenci62cg @idCola,@Causa, @Resultado OUTPUT,@Diagnostico OUTPUT
SELECT @Cod = 3, @Causa = 7, @Diagnostico =+convert(VARCHAR(1000), @Diagnostico)
	
 IF @Diagnostico<>''
  BEGIN
    SET @Cod = 1
	GOTO Salir
 END
 ELSE
 SET @Cod=0
END
--Agregado por pablo richard para probar los scrip de cada licencia
--Licencia razones particulares 62 sg
IF @Licencia=0 BEGIN
EXEC paChequearIniciodeLicenci62sg @idCola,@Causa, @Resultado OUTPUT,@Diagnostico OUTPUT
SELECT @Cod = 3, @Causa = 7, @Diagnostico =+convert(VARCHAR(1000), @Diagnostico)
	
 IF @Diagnostico<>''
  BEGIN
    SET @Cod = 1
	GOTO Salir
 END
 ELSE
 SET @Cod=0
END
--Agregado por pablo richard para probar los scrip de cada licencia
--Licencia festividades religiosas 64
IF @Licencia=44 BEGIN
EXEC paChequearIniciodeLicencia64 @idCola,@Causa, @Resultado OUTPUT,@Diagnostico OUTPUT
SELECT @Cod = 3, @Causa = 7, @Diagnostico =+convert(VARCHAR(1000), @Diagnostico)
	
 IF @Diagnostico<>''
  BEGIN
    SET @Cod = 1
	GOTO Salir
 END
 ELSE
 SET @Cod=0
END


--Agregado por pablo richard para probar los scrip de cada licencia
--Licencia horario de estudiante 66
IF @Licencia=45 BEGIN
EXEC paChequearIniciodeLicencia66 @idCola,@Causa, @Resultado OUTPUT,@Diagnostico OUTPUT
SELECT @Cod = 3, @Causa = 7, @Diagnostico =+convert(VARCHAR(1000), @Diagnostico)
	
 IF @Diagnostico<>''
  BEGIN
    SET @Cod = 1
	GOTO Salir
 END
 ELSE
 SET @Cod=0
END
--Agregado por pablo richard para probar los scrip de cada licencia
--Licencia horario de estudiante 67
IF @Licencia=46 BEGIN
EXEC paChequearIniciodeLicencia67 @idCola,@Causa, @Resultado OUTPUT,@Diagnostico OUTPUT
SELECT @Cod = 3, @Causa = 7, @Diagnostico =+convert(VARCHAR(1000), @Diagnostico)
	
 IF @Diagnostico<>''
  BEGIN
    SET @Cod = 1
	GOTO Salir
 END
 ELSE
 SET @Cod=0
END

--Agregado por pablo richard para probar los scrip de cada licencia
--Licencia capacitacion y perfeccionamiento profesional 68
IF @Licencia=0 BEGIN
EXEC paChequearIniciodeLicencia68 @idCola,@Causa, @Resultado OUTPUT,@Diagnostico OUTPUT
SELECT @Cod = 3, @Causa = 7, @Diagnostico =+convert(VARCHAR(1000), @Diagnostico)
	
 IF @Diagnostico<>''
  BEGIN
    SET @Cod = 1
	GOTO Salir
 END
 ELSE
 SET @Cod=0
END
--Agregado por pablo richard para probar los scrip de cada licencia
--Licencia citaciones o tramites personales 69
IF @Licencia=47 BEGIN
EXEC paChequearIniciodeLicencia69 @idCola,@Causa, @Resultado OUTPUT,@Diagnostico OUTPUT
SELECT @Cod = 3, @Causa = 7, @Diagnostico =+convert(VARCHAR(1000), @Diagnostico)
	
 IF @Diagnostico<>''
  BEGIN
    SET @Cod = 1
	GOTO Salir
 END
 ELSE
 SET @Cod=0
END
--Agregado por pablo richard para probar los scrip de cada licencia
--Licencia delegados gremiales 70
IF @Licencia=48 BEGIN
EXEC paChequearIniciodeLicencia70 @idCola,@Causa, @Resultado OUTPUT,@Diagnostico OUTPUT
SELECT @Cod = 3, @Causa = 7, @Diagnostico =+convert(VARCHAR(1000), @Diagnostico)
	
 IF @Diagnostico<>''
  BEGIN
    SET @Cod = 1
	GOTO Salir
 END
 ELSE
 SET @Cod=0
END
--Agregado por pablo richard para probar los scrip de cada licencia
--Licencia Anual 10
IF @Licencia=16 BEGIN
EXEC paChequearIniciodeLicencia10 @idCola,@Causa, @Resultado OUTPUT,@Diagnostico OUTPUT
SELECT @Cod = 3, @Causa = 7, @Diagnostico =+convert(VARCHAR(1000), @Diagnostico)
	
 IF @Diagnostico<>''
  BEGIN
    SET @Cod = 1
	GOTO Salir
 END
 ELSE
 SET @Cod=0
END


-- Verifico si la licencia tiene sit lab LE y no hay cupof destino.
IF @SitLabAsociada = 1 AND @CupofDestino IS NULL	BEGIN
--	prINT 'Error de cupof destino'
	SELECT @Cod = 3, @Causa = 7, @Diagnostico = '*' + 'Esta licencia requiere un CUPOF destino debido a que la situacion laboral es LE!'
	GOTO salir
END

-- Verifico si la licencia tiene sit lab LE y no hay cupof destino.
IF @SitLabAsociada = 1 AND @CupofDestino IS NULL	
BEGIN
--	prINT 'Error de cupof destino'
	SELECT @Cod = 3, @Causa = 8, @Diagnostico = '*' + 'Esta licencia requiere un CUPOF destino debido a que la situacion laboral es LE!'
	GOTO salir
END

-- Si ya existe el movimiento
IF Exists (SELECT top 1 IdSubServicio FROM tb_SubServiciosAgentes WHERE ServicioAgente = @Servicio AND fechaAlta = @Fecha1 AND FechaBaja = @Fecha2 AND Licencia = @Licencia)
BEGIN
	SELECT @Cod = 3, @Causa = 9, @Diagnostico = '*' + 'La Licencia que intenta cargar ya existe!'
	GOTO salir
END

IF @fecha1 < @fasa
BEGIN
	SELECT @cod = 3, @Causa = 10, @Diagnostico=@Diagnostico+'*' + 'Error! La Licencia que intenta insertar esta fuera de un servicio valido. ModIFique la fecha de inicio de la Licencia y vuelva a INTentarlo!'
	GOTO salir
END


---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
------ ESTO SE QUITO POR SOLICITUD DE ROBERTO, YA QUE LAS ESCUELAS NO DEBEN CARGAR EL CODIGO DE ENFERMEDAD
--		 VerIFico si la licencia requiere un codigo de enfermedad y si fue suministrado
--IF ((@RequiereEnfermedad = 'S') AND (SELECT Enfermedad FROM tb_PlazasDeMovimiento WHERE idCola = @idCola) is NULL)
--BEGIN
--	SELECT @Cod = 1, @Causa = 11, @Diagnostico = '*' + 'Esta licencia requiere un codigo de enfermedad que no ha sido suministrado'
--	GOTO salir
--END
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


IF EXISTS (SELECT top 1 IdSubServicio FROM tb_SubServiciosAgentes WHERE @Fecha1 >= FechaAlta AND Baja = 'S' AND FechaBaja >= @Fecha1 AND ServicioAgente = @Servicio) 
BEGIN
IF @Fecha2 IS NULL
	BEGIN
	SELECT @cod = 3, @Causa = 12, @Diagnostico=@Diagnostico+'*' + 'Error! La Licencia se superpone con un sub servicio ya dado de baja. Para insertar una licencia historica debe especificar una fecha de baja!'
	GOTO Salir  --  Agregadp 11/04/2006
	END

IF @fecha2 IS NOT NULL 
	BEGIN
	     IF NOT EXISTS (SELECT top 1 IdSubServicio FROM tb_SubServiciosAgentes WHERE @Fecha1 >= FechaAlta AND Baja = 'S' AND FechaBaja >= @Fecha2 AND ServicioAgente = @Servicio) 
		BEGIN
		   SELECT @cod=3, @Causa = 13, @Diagnostico=@Diagnostico+'*'+'-Error!. Para insertar una licencia historica ésta debe estar dentro de un subservicio! El alta de la misma involucra a varios'
		   GOTO Salir -- Agregado 11/04/2006
		END
	END	
--UPDATE tb__PlazasDeMovimiento SET estado = 3 WHERE idCola = @idCola
END

--Es una licencia extraordinaria, se especifica CupofDestino pero el CupofDestino esta ocupada por otra persona
IF @SitLabAsociada = 1 AND @CUPOFDestino is NOT NULL AND EXISTS(SELECT top 1 IdSubServicio FROM tb_SubServiciosAgentes s WHERE plaza = @CUPOFdestino AND
	((FechaAlta <= @Fecha1 AND baja = 'N') or (baja = 'S' AND FechaAlta <= @Fecha1 AND FechaBaja >= @Fecha1)))
BEGIN
	--DECLARE @idss INT
	--SELECT @idss = (SELECT max(idsubservicio) FROM tb__SubServiciosAgentes s WHERE plaza = @CUPOFdestino AND
	--((FechaAlta <= @Fecha1 AND baja = 'N') or (baja = 'S' AND FechaAlta <= @Fecha1 AND FechaBaja >= @Fecha1)))
	SELECT @Cod = 1, @Causa = 14, @Diagnostico = '*' + 'La Plaza destino seleccionada ('+(SELECT Cupof FROM tb_Plazas WHERE idPlaza = @CupofDestino)+' esta ocupada por otro agente!'
	GOTO salir
END


-- VerIFica la duracion maxima de la licencia. Si no se especIFica la fecha de baja se agrega un mensaje de alerta
-- Miro si el sub servicio anterior tambien tenia la misma licencia...
DECLARE @F1 DATETIME
SELECT @dias = 0
IF (@FechaAEvaluar is NOT NULL)
	BEGIN
	IF (SELECT Licencia FROM tb_SubServiciosAgentes WHERE idSubServicio = @SubServicio) = @Licencia
	BEGIN
		IF (@UTDurMax = 1)
		BEGIN
			SELECT @F1 = FechaAlta FROM tb_SubServiciosagentes WHERE idSubServicio = @SubServicio
			SELECT @dias = DATEDIFF(DAY, @F1, @Fecha1)
		END
		ELSE
		BEGIN
			SELECT @F1 = FechaAlta FROM tb_SubServiciosAgentes WHERE idSubServicio = @SubServicio
			EXEC @dias = spDIFDiasHabiles @Fecha1, @FechaAEvaluar
		END
	END		

	-- Agregado el 02-03-2006 (Javier Otero) Para controlar si una licencia de dias corridos termina un viernes y continua un lunes.
	IF DATENAME(WEEKDAY, @Fecha1) = 'Lunes' 
		AND EXISTS(SELECT top 1  IdSubServicio FROM tb_SubServiciosAgentes WHERE ServicioAgente = @Servicio AND FechaBaja = DATEADD(DAY, -2, @Fecha1) AND Licencia = @Licencia)  
		AND @UTDurMax = 1
	BEGIN
		SELECT @F1 = FechaAlta FROM tb_SubServiciosAgentes WHERE ServicioAgente = @Servicio AND FechaBaja = DATEADD(DAY, -2, @Fecha1) AND Licencia = @Licencia
		-- Suma el sabado y el domingo
		SELECT @dias = 2
	END

	IF (@UTDurMax = 1)
		SELECT @dias = @dias+DATEDIFF(DAY, @Fecha1, @FechaAEvaluar)
	ELSE
	BEGIN
		DECLARE @dias2 INT
		EXEC @dias2 = spDIFDiasHabiles @Fecha1, @FechaaEvaluar
		SELECT @Dias = @dias + @dias2
	END

	IF @dias > @DuracionMax
	BEGIN
		SELECT @cod = 1, @Causa = 15, @Diagnostico= '*' + 'Se supera el total de dias ('+convert(VARCHAR, @duracionmax)+') permitidos por esta licencia'
		GOTO salir		
	END
END
ELSE
	SELECT @Warning = 'No se especifico la fecha de baja de la Licencia. La fecha de plazo maxima es '+convert(VARCHAR,dateadd(day, @DuracionMax, @Fecha1))
	
--Verifico la duracion minima de la licencia
SELECT @dias = 0
IF (@FechaAEvaluar is NOT NULL) AND (@DuracionMinima is NOT NULL)
	BEGIN
	IF (SELECT Licencia FROM tb_SubServiciosAgentes WHERE idSubServicio = @SubServicio) = @Licencia
		BEGIN
		IF (@UTDuracionMinima = 1)
			BEGIN
			SELECT @F1 = FechaAlta FROM tb_SubServicios WHERE idSubServicio = @SubServicio
			SELECT @dias = datedIFf(day, @F1, @Fecha1)
			END
		ELSE
			BEGIN
			SELECT @F1 = FechaAlta FROM tb_SubServicios WHERE idSubServicio = @SubServicio
			EXEC @dias = spDIFDiasHabiles @Fecha1, @FechaAEvaluar
			END
		END		
	IF (@UTDuracionMinima = 1)
		SELECT @dias = @dias+datedIFf(day, @Fecha1, @FechaAEvaluar)
	ELSE
		BEGIN
		EXEC @dias2 = spDIFDiasHabiles @Fecha1, @FechaaEvaluar
		SELECT @Dias = @dias + @dias2
		END

	IF @dias < @duracionminima
		BEGIN
		SELECT @cod = 1, @Causa = 16, @Diagnostico= '*' + 'Esta licencia necesita como mínimo ('+convert(VARCHAR, @duracionminima)+') dias y se tomaría '+convert(VARCHAR, @dias)
		GOTO salir				END
	END
ELSE
	SELECT @Warning = 'No se especIFico la fecha de baja de la Licencia. La fecha de plazo maxima es '+convert(VARCHAR,dateadd(day, @DuracionMax, @Fecha1))


-- Verifico la antiguedad minima que permite la licencia teniENDo en cuenta la UT y la UTC
DECLARE @antiguedad INT
DECLARE @fecha datetime
-- En el Año
IF @UTCAntMin = 1
	BEGIN
		SELECT @fecha = cast('01/01/'+cast(year(@Fecha1) as VARCHAR(4)) as datetime)
	END
-- En el año de servicio?
IF @UTCAntMin = 2
	BEGIN
		SELECT @fecha  = dateadd(day, -365, @Fecha1)
	END
-- en Total
IF @UTCAntMin = 6
	SELECT @fecha = min(FechaAlta) FROM tb_ServiciosAgentes WHERE Agente = @Agente group by Agente
-- En el Decenio
IF @UTCAntMin = 5
	BEGIN
		SELECT @fecha='01/01/'+convert(VARCHAR,datepart(year,@Fecha1)-9)
	END
-- En el Bieño
IF @UTCAntMin = 4
	BEGIN
		SELECT @fecha = '01/01/'+convert(VARCHAR, year(@Fecha1)-1)
	END
-- En el mes calENDario
IF @UTCAntMin = 3
	BEGIN
		SELECT @fecha='01/'+convert(VARCHAR,datepart(month,@Fecha1))+convert(VARCHAR,datepart(year,@Fecha1))
	END
--Si la antiguedad se mide en dias Corridos
IF @UTAntMin  = 1
	BEGIN
		EXEC spAntiguedadAgente @Agente, @fecha, @Fecha1, @antiguedad output
	END
ELSE
		EXEC spAntiguedadAgenteHab @Agente, @fecha, @Fecha1, @antiguedad output
IF @AntMin > @Antiguedad AND ( (@Enfermedad IS NULL) OR (@Enfermedad IS NOT NULL AND @Enfermedad NOT IN (SELECT IdEnfermedad FROM tb_Enfermedades WHERE NoCuentaAntiguedadParaLicencia = 'S')))
BEGIN
	SELECT @cod = 1, @Causa = 17, @Diagnostico ='*'+'El agente tiene '+convert(VARCHAR, @antiguedad)+' dias de servicio. Para gozar la licencia se necesitan mas de '+convert(VARCHAR, @AntMin)	
	GOTO SALIR
END

-- Cheque de Antiguedad Maxima. Agregado el 10-10-2006
IF @AntiguedadMaxima IS NOT NULL
BEGIN
	-- En el Año
	IF @UTCAntiguedadMaxima = 1
	BEGIN
		SELECT @fecha = CAST('01/01/'+CAST(YEAR(@Fecha1) AS VARCHAR(4)) AS DATETIME)
	END
	-- En el año de servicio?
	IF @UTCAntiguedadMaxima = 2
	BEGIN
		SELECT @fecha  = DATEADD(DAY, -365, @Fecha1)
	END
	-- en Total
	IF @UTCAntiguedadMaxima = 6
		SELECT @fecha = MIN(FechaAlta) FROM tb_ServiciosAgentes WHERE Agente = @Agente group by Agente
	-- En el Decenio
	IF @UTCAntiguedadMaxima = 5
	BEGIN
		SELECT @fecha='01/01/'+CONVERT(VARCHAR,DATEPART(YEAR,@Fecha1)-9)
	END
	-- En el Bieño
	IF @UTCAntiguedadMaxima = 4
	BEGIN
		SELECT @fecha = '01/01/'+CONVERT(VARCHAR, YEAR(@Fecha1)-1)
	END
	-- En el mes calENDario
	IF @UTCAntiguedadMaxima = 3
	BEGIN
		SELECT @fecha='01/'+CONVERT(VARCHAR,DATEPART(MONTH,@Fecha1))+CONVERT(VARCHAR,DATEPART(YEAR,@Fecha1))
	END
	--Si la antiguedad se mide en dias Corridos
	IF @UTAntiguedadMaxima  = 1
		EXEC spAntiguedadAgente @Agente, @fecha, @Fecha1, @antiguedad OUTPUT
	ELSE
		EXEC spAntiguedadAgenteHab @Agente, @fecha, @Fecha1, @antiguedad OUTPUT
	IF @AntiguedadMaxima < @Antiguedad AND ( (@Enfermedad IS NULL) OR (@Enfermedad IS NOT NULL AND @Enfermedad NOT IN (SELECT IdEnfermedad FROM tb_Enfermedades WHERE NoCuentaAntiguedadParaLicencia = 'S')))
	BEGIN
		SELECT @cod = 1, @Causa = 17, @Diagnostico ='*'+'El agente tiene '+CONVERT(VARCHAR, @antiguedad)+' dias de servicio. Para gozar la licencia se necesitan MENOS de '+CONVERT(VARCHAR, @AntiguedadMaxima)	
		GOTO SALIR
	END
END -- END Cheque Antiguedad Maxima

-- controlo la distancia minima entre licencias (INTERMEDIO OBLIGATORIO)
-- Si el subservicio anterior no esta dado de baja y es el mismo tipo de licencia?
DECLARE @MayorFB datetime
IF (@INTermedioObligatorio is NOT NULL) or (@INTermedioObligatorio > 0)
	BEGIN
	IF (SELECT FechaBaja FROM tb_SubServiciosAgentes WHERE idsubServicio = @SubServicio) is NULL AND (SELECT Licencia FROM tb_SubServiciosAgentes WHERE idSubServicio = @SubServicio) = @Licencia
		BEGIN
		SELECT @cod = 1,@Diagnostico = '*'+'El Agente tiene esa Licencia y sin baja!. No cumple con la cantidad de dias minima entre licencias'
		GOTO salir
		END
	ELSE
		BEGIN
		SELECT @MayorFB = max(ss.FechaBaja) FROM tb_SubServiciosAgentes ss, tb_ServiciosAgentes s WHERE s.agente = @Agente AND s.idServicioAgente = ss.servicioAgente AND ss.Licencia = @Licencia
		IF @UTINTermedioObligatorio = 1
			SELECT @dias = datedIFf(day, @MayorFB, @Fecha1)
		ELSE
			EXEC @dias = spDIFDiasHabiles @MayorFB, @Fecha1
		IF @dias < @INTermedioObligatorio
			BEGIN			SELECT @cod = 1, @Causa = 18, @Diagnostico = '*'+'El Agente tuvo esa licencia el dia '+convert(VARCHAR, @MayorFB)+'. No cumple con la cantidad de dias minima entre licencias' 
			GOTO salir
			END
		END
	END

-- VerIFico el primer limite de dias
DECLARE @dias1 INT
IF (@Limite1 is NOT NULL) or (@Limite1 <> 9999) AND (@FechaAEvaluar is NOT NULL)
-- Primero calculo la dIFerencia de la licencia que se quiere insertar
BEGIN
IF @UTLimite1 = 1
	SELECT @dias1 = DATEDIFF(day, @Fecha1, @FechaAEvaluar)+1
ELSE
	EXEC @dias1 = spDIFDiasHabiles @Fecha1, @FechaAEvaluar

select @dias1 as dias1

--En el año
IF @UTCLimite1 = 1
	SELECT @fecha = '01/01/'+convert(VARCHAR, year(@Fecha1)), @UTC = ' año '

--En el año de servicio ==> ESTA PENDIENTE
IF @UTCLimite1 = 2
	SELECT @fecha = '01/01/'+convert(VARCHAR, year(@Fecha1)), @UTC = ' año de servicio '

--En el mes calENDario
IF @UTCLimite1 = 3
	SELECT @fecha = '01/'+convert(VARCHAR, month(@Fecha1))+'/'+convert(VARCHAR, year(@Fecha1)), @UTC = ' mes '

-- En el bieño
IF @UTCLimite1 = 4
	SELECT @fecha = '01/01/'+convert(VARCHAR,year(@Fecha1)-1), @UTC = ' bieño '

-- En el decenio calENDario
IF @UTCLimite1 = 5
	SELECT @fecha = '01/01/'+convert(VARCHAR,year(@Fecha1)-9), @UTC = ' decenio '

-- En el Total
IF @UTCLimite1 = 6
	BEGIN
	SELECT @fecha = min(FechaAlta) FROM tb_ServiciosAgentes WHERE Agente = @Agente
	SELECT @UTC = ' total '
	END

SELECT @dias = 0

IF @UTLimite1 = 1
	EXEC @dias = spDiasDeLicencias @Agente, @fecha, @fecha1, @licencia,'C', @Aplicacion, @Turno
ELSE
BEGIN
	EXEC @dias = spDiasDeLicencias @Agente, @fecha, @fecha1, @licencia,'H', @Aplicacion, @Turno
END

--Si la licencia tiene licencias relacionadas del tipo SUMAR DIAS.
IF EXISTS(SELECT top 1 LicenciaRelacionada FROM tb_LicenciasRelacionadas WHERE Licencia = @Licencia AND TipoDeRelacion = 1 AND FechaDeBaja IS NULL)
BEGIN
	SELECT @DiasAcumulados = 0

	DECLARE crsLicenciasRelacionadas CURSOR FORWARD_ONLY  READ_ONLY FOR
	SELECT LicenciaRelacionada FROM tb_LicenciasRelacionadas WHERE Licencia = @Licencia AND TipoDeRelacion = 1 AND FechaDeBaja IS NULL

	OPEN crsLicenciasRelacionadas

	FETCH NEXT FROM crsLicenciasRelacionadas INTO @LicenciaRelacionada

	WHILE @@FETCH_STATUS = 0
	BEGIN
		IF @UTLimite1 = 1
			EXEC @DiasAcumulados = spDiasDeLicencias @Agente, @fecha, @fecha1, @LicenciaRelacionada,'C', @Aplicacion, @Turno
		ELSE
			EXEC @DiasAcumulados = spDiasDeLicencias @Agente, @fecha, @fecha1, @LicenciaRelacionada,'H', @Aplicacion, @Turno
	
		FETCH NEXT FROM crsLicenciasRelacionadas INTO @LicenciaRelacionada
	END

	CLOSE crsLicenciasRelacionadas
	DEALLOCATE crsLicenciasRelacionadas
END
SELECT @dias as dias
SELECT @dias = @dias+@dias1+@DiasAcumulados


-- Actualizado 04-06-2009 - Se sacaron las Licencias 5 y 6 porque tienen un tratamiento especial por acumulacion de dias

IF @dias > @Limite1 AND @Licencia <> 5 AND @Licencia <> 6
	BEGIN
	SELECT @cod = 1, @Causa = 19, @Diagnostico = '*Error! El agente se tomaría '+convert(VARCHAR, @dias)+' días en el último '+@UTC+'y no se puede tomar  mas de '+convert(VARCHAR,@Limite1)+' en el periodo'
	GOTO salir
	END 
END

-- Verifico el segundo limite de dias
IF (@Limite2 is NOT NULL) or (@Limite2 <> 9999) AND (@FechaAEvaluar is NOT NULL)
-- Primero calculo la dIFerencia de la licencia que se quiere insertar
BEGIN
SELECT @Dias = 0, @Dias2 = 0IF @UTLimite2 = 1
	SELECT @dias2 = DATEDIFF(day, @Fecha1, @FechaAEvaluar)+1
ELSE
	EXEC @dias2 = spDIFDiasHabiles @Fecha1, @FechaAEvaluar


IF @Fecha1 = @FechaAEvaluar 
	SELECT @dias2 = 1

--En el año
IF @UTCLimite2 = 1
	BEGIN
	SELECT @fecha = '1/1/'+convert(VARCHAR, year(@Fecha1)), @UTC = ' año '
	END
--En el año de servicio (PENDIENTE)
IF @UTCLimite2 = 2
	SELECT @fecha = '1/1/'+convert(VARCHAR, year(@Fecha1)), @UTC = ' año de servicio '

--En el mes calENDario
IF @UTCLimite2 = 3
	BEGIN
	SELECT @fecha = +'01/'+convert(VARCHAR, month(@Fecha1))+'/'+convert(VARCHAR, year(@Fecha1)), @UTC = ' mes '
	END
-- En el bieño
IF @UTCLimite2 = 4
	BEGIN
	SELECT @fecha = '01/01/'+convert(VARCHAR,year(@Fecha1)-1), @UTC = ' bieño '
	END
-- En el decenio calENDario
IF @UTCLimite2 = 5
	BEGIN
	SELECT @fecha = '1/1/'+convert(VARCHAR,year(@Fecha1)-9), @UTC = ' decenio '
	END

-- En el Total
IF @UTCLimite2 = 6
	BEGIN
	SELECT @fecha = min(FechaAlta) FROM tb_ServiciosAgentes WHERE Agente = @Agente
	SELECT @UTC = ' total '
	END
IF @UTLimite2 = 1
BEGIN
	SET dateformat dmy
	EXEC @dias = spDiasDeLicencias @Agente, @fecha, @fecha1, @Licencia, 'C', @Aplicacion, @Turno
END
ELSE
BEGIN
	DECLARE @FD smalldatetime
	DECLARE @FH smalldatetime
	SELECT @FD = convert(datetime, @Fecha)
	SELECT @FH = convert(datetime, @Fecha1)

	EXEC @dias = spDiasDeLicencias @Agente, @fd, @fh, @licencia ,'H', @Aplicacion, @Turno

END

--Si la licencia tiene licencias relacionadas del tipo SUMAR DIAS.
SELECT @DiasAcumulados = 0
IF EXISTS(SELECT top 1  LicenciaRelacionada FROM tb_LicenciasRelacionadas WHERE Licencia = @Licencia AND TipoDeRelacion = 1 AND FechaDeBaja IS NULL)
BEGIN
	DECLARE crsLicenciasRelacionadas CURSOR FORWARD_ONLY  READ_ONLY FOR
	SELECT LicenciaRelacionada FROM tb_LicenciasRelacionadas WHERE Licencia = @Licencia AND TipoDeRelacion = 1 AND FechaDeBaja IS NULL

	OPEN crsLicenciasRelacionadas

	FETCH NEXT FROM crsLicenciasRelacionadas INTO @LicenciaRelacionada

	WHILE @@FETCH_STATUS = 0
	BEGIN
		IF @UTLimite1 = 1
			EXEC @DiasAcumulados = spDiasDeLicencias @Agente, @fecha, @fecha1, @LicenciaRelacionada,'C', @Aplicacion, @Turno
		ELSE
			EXEC @DiasAcumulados = spDiasDeLicencias @Agente, @fecha, @fecha1, @LicenciaRelacionada,'H', @Aplicacion, @Turno
	
		FETCH NEXT FROM crsLicenciasRelacionadas INTO @LicenciaRelacionada
	END

	CLOSE crsLicenciasRelacionadas
	DEALLOCATE crsLicenciasRelacionadas
END

SELECT @dias = @dias+@dias2+@DiasAcumulados 

IF @dias > @Limite2 
	BEGIN
	SELECT @cod = 1, @Causa = 20, @Diagnostico = '*Error! El agente se tomaría '+convert(VARCHAR, @dias)+' días en el último '+convert(VARCHAR,@UTC)+'y no se puede tomar  mas de '+convert(VARCHAR,@Limite2)+' en el periodo.' -- +' Dias: '+convert(VARCHAR, @Dias)+' Limite2: '+convert(VARCHAR,@Limite2)+ ' Fecha: '+convert(VARCHAR, @FH)+' Fecha1: '+convert(VARCHAR, @FD)+' Agente: '+convert(VARCHAR,@Agente)+' Turno: '+convert(VARCHAR, @Turno)+' Aplicacion '+convert(VARCHAR, @Aplicacion)+' UTLimite2: '+convert(VARCHAR, @UTLimite2)+ ' FechaAEvaluar: '+convert(VARCHAR, @FechaAEvaluar)+' Licencia '+convert(VARCHAR, @licencia)
	GOTO salir
	END
END

-- Verifico el limite de veces de pedido de licencia por UTC.
IF (@CantMax is NOT NULL) or (@CantMax > 0)
BEGIN
	DECLARE @count INT
	
	--En el año
	IF @UTCCantMax = 1
		SELECT @fecha = '1/1/'+convert(VARCHAR, year(@Fecha1)), @UTC = ' año '
	
	--En el año de servicio ==> ESTA PENDIENTE
	IF @UTCCantMax = 2
		SELECT @fecha = '1/1/'+convert(VARCHAR, year(@Fecha1)), @UTC = ' año de servicio '
	
	--En el mes calENDario	
	IF @UTCCantMax = 3
		SELECT @fecha = '1/'+convert(VARCHAR, month(@Fecha1))+'/'+convert(VARCHAR, year(@Fecha1)), @UTC = ' mes '
	
	-- En el bieño
	IF @UTCCantMax = 4
		SELECT @fecha = '1/1/'+convert(VARCHAR,year(@Fecha1)-1), @UTC = ' bieño '
	
	-- En el decenio calENDario
	IF @UTCCantMax = 5
		SELECT @fecha = '1/1/'+convert(VARCHAR,year(@Fecha1)-9), @UTC = ' decenio '
	
	-- En el Total
	IF @UTCCantMax = 6
		BEGIN
		SELECT @fecha = MIN(FechaAlta) FROM tb_ServiciosAgentes WHERE Agente = @Agente
		SELECT @UTC = ' total '
		END
	
	IF @aplicacion = 1 
		SELECT @count = (SELECT count(*)+1 FROM tb_SubServiciosAgentes WHERE FechaAlta > @fecha AND Licencia = @Licencia AND ServicioAgente = @servicio)
	IF @aplicacion = 2
		SELECT @count = (SELECT count(*)+1 FROM tb_SubServiciosAgentes ss INNER JOIN tb_Plazas p on p.IdPlaza = ss.Plaza INNER JOIN tb_ServiciosAgentes s ON s.IdServicioAgente = ss.ServicioAgente WHERE ss.FechaAlta > @fecha AND ss.Licencia = @Licencia AND P.Turno = @turno AND s.Agente = @Agente)
	IF @aplicacion = 3 
		SELECT @count = (SELECT count(*)+1 FROM tb_SubServiciosAgentes ss INNER JOIN tb_ServiciosAgentes s ON s.IdServicioAgente = ss.ServicioAgente WHERE ss.FechaAlta > @fecha AND Licencia = @Licencia AND S.Agente = @agente)
	
	IF (@count > @CantMax)
	BEGIN
		SELECT @cod = 1, @Causa = 21, @Diagnostico = '*Error! El agente se tomaria '+convert(VARCHAR, @count)+' veces esa licencia en el '+@UTC+'y no puede exeder los '+convert(VARCHAR,@CantMax)+' dias'
		GOTO salir
	END
	
END

-- Se verIFica que no se superponga con otro sub servicio anterior dentro del servicio.
-- Si la licencia a insertar esta dentro de un subservicio se toma como correcta
/*
IF exists (SELECT * FROM tb__SubServiciosAgentes WHERE @Fecha1 > FechaAlta AND Baja = 'S' AND FechaBaja > @Fecha1 AND ServicioAgente = @Servicio) 
BEGIN
IF @Fecha2 is NULL
	BEGIN
	prINT 'Error de superposicion'
	SELECT @cod = 3, @Diagnostico='*' + 'Error! La Licencia se superpone con un sub servicio ya dado de baja. Para insertar una licencia historica debe especIFicar una fecha de baja!'
	goto salir
	END
IF @fecha2 is NOT NULL 
	BEGIN
	IF NOT exists (SELECT * FROM tb__SubServiciosAgentes WHERE @Fecha1 >= FechaAlta AND Baja = 'S' AND FechaBaja >= @Fecha2 AND ServicioAgente = @Servicio) 
		BEGIN
		prINT 'Error de superposicion2'
		SELECT @cod=3, @Diagnostico='*'+'-Error!. Para insertar una licencia historica ésta debe estar dentro de un subservicio! El alta de la misma involucra a varios'
		goto salir
		END
	END	
--UPDATE tb__PlazasDeMovimiento SET estado = 3 WHERE idCola = @idCola
END
--else
--	UPDATE tb__PlazasDeMovimiento SET estado = 2 WHERE idCola = @idCola

*/

-- Verifico  Si la Situacion de Revista es valida para esta licencia
IF @SitRev NOT in (SELECT idSituacionRevista FROM tb_SituacionesRevistaPermitidasPorLicencia WHERE idLicencia = @Licencia)
BEGIN
	SELECT @cod = 1, @Causa = 22, @Diagnostico = '*'+'Error! La situacion de revista no es aceptada por este tipo de licencia!'
	GOTO salir
END

-- Se controla que el movimiento no sea demasiado alejado a la fecha del dia.
IF @Fecha1 < GETDATE() AND (DATEDIFF(DAY, @Fecha1, GETDATE())+1) > @DiasAnterioresAlta
	SELECT @Cod = 1, @Diagnostico = 'Error! El movimiento que se desea pasar es demasiado antiguo (tiene mas de '+CONVERT(VARCHAR, @DiasAnterioresAlta)+' dias).'
ELSE
	IF  (DATEDIFF(DAY, GETDATE(), @Fecha1)+1) > @DiasPosterioresAlta
		SELECT @Cod = 1, @Diagnostico = 'Error! El movimiento que se desea pasar tiene mas de '+CONVERT(VARCHAR, @DiasPosterioresAlta)+' dias posteriores a la fecha'

IF @Fecha2 IS NOT NULL AND @Fecha2 < GETDATE() AND (DATEDIFF(DAY, @Fecha2, GETDATE())+1) > @DiasAnterioresBaja
	SELECT @Cod = 1, @Diagnostico = 'Error! La fecha de baja exede la cantidad de dias permitidos anteriores a la fecha de hoy (tiene mas de '+CONVERT(VARCHAR, @DiasAnterioresAlta)+' dias de diferencia).'
ELSE
	IF @Fecha2 IS NOT NULL AND @Fecha2 > GETDATE() AND (DATEDIFF(DAY, GETDATE(), @Fecha2)+1) > @DiasPosterioresBaja
		SELECT @Cod = 1, @Diagnostico = 'Error! La fecha de baja exede la cantidad de dias permitidos posteriores a la fecha de hoy (tiene mas de '+CONVERT(VARCHAR, @DiasAnterioresAlta)+' dias de diferencia).'


Salir:

-- Si el procedimiento tiene una restriccion especifica.
IF @RestriccionEspecifica IS NOT NULL
BEGIN
	DECLARE @proc NVARCHAR(255)
	DECLARE @param NVARCHAR(255)

	SELECT @proc = 'EXECUTE ' + @RestriccionEspecifica + ' @IdCola, @Causa, @Cod OUTPUT, @Diagnostico OUTPUT'
	SELECT @param =  '@IdCola INT, @Causa INT, @Cod INT OUTPUT, @Diagnostico VARCHAR(1000) OUTPUT'

	EXEC sp_ExecuteSQL @proc, @param, @IdCola, @Causa, @Cod OUTPUT, @Diagnostico OUTPUT
END

-- En funcion del codigo (0,1,2) realizo un UPDATE en el estado de la cola y siempre retorno el diagnostico.
UPDATE Tb_ColaDeMovimientos SET Estado = @Cod, estadocheck = @cod,
	 ChequeoEscuela = CASE WHEN @Modo = 2 THEN @Diagnostico ELSE ChequeoEscuela END
	 WHERE idCola = @idCola

SET @Estado = @Cod
GO


GRANT EXECUTE ON  [dbo].[paChequearIniciosDeLicencias] TO [CentroDeDesignaciones]
GRANT EXECUTE ON  [dbo].[paChequearIniciosDeLicencias] TO [GestionInstitucional]
GRANT EXECUTE ON  [dbo].[paChequearIniciosDeLicencias] TO [PersonalDocente]
GO
